package china.accountinghelper.business;

import java.util.List;

import com.xdroid.base.BusinessBase;

import china.wc.tallyhelper.database.SQLiteDALModelPerson;
import china.wc.tallyhelper.model.ModelPerson;

/**
 * 本类是所有业务类的父类，封装和ModelPerson实体类相关的业务逻辑。
 * 本类的作用是将DAL层的方法进一步封装，并将其返回结果进行必要的处理，方便Activity、Adapter进行调用。
 * 
 * @author 王超
 * 
 */
public class BusinessPerson extends BusinessBase<ModelPerson>
{

	public BusinessPerson()
	{
		super(new SQLiteDALModelPerson(ModelPerson.class));
	}

	/**
	 * 返回自己的实体类
	 */
	public ModelPerson selectSelf()
	{
	    return select(1);
	}
	
	/**
	 * 返回所有ModelPerson对象，State值大的在前。
	 * 
	 * @return 包含所有实体类对象的List
	 */
	@Override
	public List<ModelPerson> select()
	{
		String _StateColumsName = getSQLiteDAL().getFieldColumnMap().get("mState");

		return getSQLiteDAL().select(null, null, null, null, _StateColumsName + " DESC");
	}
	
    /**
     * 返回所有State不等于ModelPerson.STATE_DISABLED的人员，State值大的在前。
     * 
     * @return
     */
    public List<ModelPerson> selectEnabledPerson()
    {
        String _StateColumsName = getSQLiteDAL().getFieldColumnMap().get("mState");
        
        return getSQLiteDAL().select(_StateColumsName+"!="+ModelPerson.STATE_DISABLED, null, null, null, _StateColumsName + " DESC");
    }

	/**
	 * 启用人员
	 * 
	 * @param pPersonID
	 *            人员ID
	 * @return 启用成功返回true，失败返回false。
	 */
	public boolean enableModelPerson(long pPersonID)
	{
		ModelPerson _ModelPerson = select(pPersonID);
		return enableModelPerson(_ModelPerson);
	}

	/**
	 * 启用人员
	 * 
	 * @param pModelPerson
	 *            ModelPerson对象
	 * @return 启用成功返回true，失败返回false。
	 */
	public boolean enableModelPerson(ModelPerson pModelPerson)
	{
		pModelPerson.setState(ModelPerson.STATE_ENABLED);
		return updateModel(pModelPerson);
	}

	/**
	 * 禁用人员
	 * 
	 * @param pPersonID
	 *            人员ID
	 * @return 禁用成功返回true，失败返回false。
	 */
	public boolean disableModelPerson(long pPersonID)
	{
		ModelPerson _ModelPerson = select(pPersonID);
		return disableModelPerson(_ModelPerson);
	}

	/**
	 * 禁用人员
	 * 
	 * @param pModelPerson
	 *            ModelPerson对象
	 * @return 禁用成功返回true，失败返回false。
	 */
	public boolean disableModelPerson(ModelPerson pModelPerson)
	{
		pModelPerson.setState(ModelPerson.STATE_DISABLED);
		return updateModel(pModelPerson);
	}

}
